Computer aided design (CAD) is widely used to design everything from automobiles and airplanes to video games and web pages. Like sculpting a physical object, a CAD design is often an assembly of features. An assembly starts out with one feature, like a block of clay, and additional features are added, removed, resized, reshaped, etc. In the virtual space of a CAD environment, a designer can create a plethora of features of almost any size or shape, assemble the features in countless variations, and view the assembly of features from almost any perspective. Assemblies can be vastly complex creations that include thousands of features representing three-dimensional solids, complex surface contours, moveable or flexible parts, and so on.
Those skilled in the art of computer aided design use the terms sketch, part, and assembly to refer to different levels of abstraction. For instance, a sketch can be a collection of two-dimensional geometric shapes and constraints, a part can be a collection of sketches and features, and an assembly can be a collection of parts. For the purposes of this patent, “feature” refers in general to an element within any CAD design, and “assembly” refers in general to any collection of features, including a sketch, part, or assembly, as those terms are understood in the art.
Features are often specified in terms of parameters which can be interpreted, or executed, by a CAD process to create or recreate an assembly. This type of feature-based parametric solid modeling makes it easier to save, retrieve, and edit assemblies. At the same time however, as with compiling computer languages such as C++, Fortran, and Pascal, properly executing an assembly of features often involves debugging the assembly. Every time a feature is added or edited and the assembly is executed, a number of errors may be encountered. For instance, resizing one feature may interfere with several surrounding features.
Depending on the CAD system, an error may cause sequential execution to terminate. That is, as soon as a feature fails, execution stops. In which case, a designer may go through several iterations of error correction and re-execution before all of the features of an assembly execute properly. This type of CAD system may provide some information about a failure to help the designer understand and correct each error. For more complex designs however, correcting one error at a time, and possibly creating additional errors with each change, can be exceptionally frustrating and time consuming.
Other CAD systems may continue sequential execution even if features fail. For each failed feature, an error or warning message is usually generated and the failed feature may be left out of the executed assembly. An error log may include a list of all the error and/or warning messages generated for an assembly. In which case, a designer may be able to correct several errors in the log before re-executing the assembly.
In this type of CAD system however, since features tend to build on each other, one failed feature can lead to several dependent failures. For even moderately complex assemblies, an error log can appear daunting even if only one or two primary features fail. For instance, if a primary feature fails for whatever reason, and the failed feature is not added to the assembly, every feature that builds on the failed primary feature has no point of reference. In which case, every secondary feature also fails and causes an error message to be added to the log. Even experienced designers can spend countless hours deciphering error logs to debug designs.
Those skilled in the art will recognize that the type of execution may depend on the type of assembly. For instance, features of a sketch may be executed simultaneously by a two-dimensional constraint solver, and features of a part may be executed sequentially as described above. No matter what type of assembly is being executed however, error recovery in CAD environments is often tedious, painstaking work.
An improved error recovery method and apparatus may improve productivity and usability of CAD systems.